package cn.com.blueInfo.bpm.template.service;

import cn.com.blueInfo.bpm.template.request.ParallelGatewayDTO;
import cn.com.blueInfo.bpm.template.response.ParallelGatewayVO;
import cn.com.blueInfo.utils.result.ResultInfo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;

/**
 * 并行网关 业务服务类
 * @author suxch
 * @since 2025-08-24 01:41:15
 */
public interface ParallelGatewayService {

    /**
     * 新增并行网关
     * @param parallelGatewayDTO 并行网关参数
     */
    ResultInfo<Integer> addParallelGateway(ParallelGatewayDTO parallelGatewayDTO);

    /**
     * 批量新增并行网关
     * @param parallelGatewayDTOList 并行网关参数列表
     */
    ResultInfo<Integer> batchAddParallelGateway(List<ParallelGatewayDTO> parallelGatewayDTOList);

    /**
     * 删除并行网关
     * @param parallelGatewayId 并行网关ID
     */
    ResultInfo<Integer> removeParallelGateway(Long parallelGatewayId);

    /**
     * 批量删除并行网关
     * @param parallelGatewayIdList 并行网关ID列表
     */
    ResultInfo<Integer> batchRemoveParallelGateway(List<Long> parallelGatewayIdList);

    /**
     * 更新部分并行网关
     * @param parallelGatewayUpdatePartialDTO 并行网关参数
     */
    ResultInfo<Integer> modifyParallelGatewayPartial(
            ParallelGatewayDTO.UpdatePartialDTO parallelGatewayUpdatePartialDTO);

    /**
     * 更新全部并行网关
     * @param parallelGatewayDTO 并行网关参数
     */
    ResultInfo<Integer> modifyParallelGateway(ParallelGatewayDTO parallelGatewayDTO);

    /**
     * 查询一条并行网关
     * @param parallelGatewayId 并行网关ID
     */
    ResultInfo<ParallelGatewayVO> queryParallelGatewayById(Long parallelGatewayId);

    /**
     * 分页查询并行网关
     * @param parallelGatewayQueryDTO 并行网关参数
     */
    ResultInfo<Page<ParallelGatewayVO>> queryParallelGatewayPage(ParallelGatewayDTO.QueryDTO parallelGatewayQueryDTO);

    /**
     * 根据条件查询 并行网关 数量
     * @param parallelGatewayQueryDTO 并行网关参数
     */
    ResultInfo<Long> queryParallelGatewayCount(ParallelGatewayDTO.QueryDTO parallelGatewayQueryDTO);

    /**
     * 根据条件查询 并行网关
     * @param parallelGatewayQueryDTO 并行网关参数
     */
    ResultInfo<List<ParallelGatewayVO>> queryParallelGatewayList(ParallelGatewayDTO.QueryDTO parallelGatewayQueryDTO);

}
